home *** CD-ROM | disk | FTP | other *** search
/ Shareware Super Platinum 8 / Shareware Super Platinum 8.iso / mac / DATABASE / S9303.ZIP;1 / SPENCE.ZIP / ABTEST4.PRG < prev    next >
Encoding:
Text File  |  1993-01-06  |  3.4 KB  |  127 lines

  1. // Abtest4.prg
  2. //
  3. // Test routine to exercise simulated array browse class
  4. // Browses database file names in one window, and the structure
  5. // of the currently selected one in another.
  6. // Uses a real sub class generated by Class(Y)
  7.  
  8. #include "Directry.ch"
  9. #include "InKey.ch"
  10. #include "DbStruct.ch"
  11.  
  12. #define CHILD_DELAY .3
  13.  
  14. FUNCTION AbTest4
  15.  
  16. LOCAL oTbrFiles := arrayBrowse():init()
  17. LOCAL aFiles := Directory("*.dbf")
  18. LOCAL lExitRequested := .F.
  19. LOCAL nKey
  20. LOCAL oTbc
  21. LOCAL oTbrStru := arrayBrowse():init()
  22. LOCAL aStru
  23. LOCAL nSaveSel
  24. LOCAL cLastDbfName := ""
  25. LOCAL cThisDbfName
  26.  
  27.   IF Len(aFiles) < 1
  28.     Alert("No matching files")
  29.     QUIT
  30.   ENDIF
  31.  
  32.   oTbrFiles:arrayReference := aFiles
  33.  
  34.   TBInit(oTbrFiles, 1, 1, MaxRow() - 1, 29)
  35.  
  36.   CLEAR SCREEN
  37.   @ 0, 0 TO MaxRow(), 30
  38.  
  39.   oTbc := TBColumnNew("File Name", ;
  40.                       {|| aFiles[oTbrFiles:arrayIndex, F_NAME] })
  41.   oTbc:width := 12
  42.   oTbrFiles:addColumn(oTbc)
  43.  
  44.   oTbc := TBColumnNew("File Size", ;
  45.                       {|| aFiles[oTbrFiles:arrayIndex, F_SIZE] })
  46.   oTbrFiles:addColumn(oTbc)
  47.  
  48.   oTbc := TBColumnNew("File Date", ;
  49.                       {|| aFiles[oTbrFiles:arrayIndex, F_DATE] })
  50.   oTbrFiles:addColumn(oTbc)
  51.  
  52.   oTbc := TBColumnNew("File Time", ;
  53.                       {|| aFiles[oTbrFiles:arrayIndex, F_TIME] })
  54.   oTbrFiles:addColumn(oTbc)
  55.  
  56.   TBInit(oTbrStru, 1, 32, MaxRow() - 1, MaxCol() - 1)
  57.  
  58.   oTbc := TBColumnNew("Name", ;
  59.                       {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
  60.                                                   DBS_NAME] })
  61.   oTbc:width := 12
  62.   oTbrStru:addColumn(oTbc)
  63.  
  64.   oTbc := TBColumnNew("Type", ;
  65.                       {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
  66.                                                   DBS_TYPE] })
  67.   oTbc:width := 4
  68.   oTbrStru:addColumn(oTbc)
  69.  
  70.   oTbc := TBColumnNew("Len", ;
  71.                       {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
  72.                                                   DBS_LEN] })
  73.   oTbrStru:addColumn(oTbc)
  74.  
  75.   oTbc := TBColumnNew("Dec", ;
  76.                       {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
  77.                                                   DBS_LEN] })
  78.   oTbrStru:addColumn(oTbc)
  79.  
  80.   @ 0, 31 TO MaxRow(), MaxCol()
  81.  
  82.   DO WHILE !lExitRequested
  83.     DO WHILE NextKey() == 0 .AND. !oTbrFiles:stabilize()
  84.     ENDDO
  85.  
  86.     IF NextKey() != 0
  87.       nKey := InKey()
  88.     ELSE
  89.       nKey := InKey(CHILD_DELAY)
  90.       IF nKey == 0
  91.         // No key occurred within timeout - check to see whether
  92.         // need to redraw child TBrowse
  93.         cThisDbfName := oTbrFiles:arrayReference[oTbrFiles:arrayIndex, ;
  94.                                                  F_NAME]
  95.         IF !(cLastDbfName == cThisDbfName)
  96.           nSaveSel := Select()
  97.           USE (cThisDbfName) NEW
  98.           aStru := DbStruct()
  99.           CLOSE (cThisDbfName)
  100.           SELECT (nSaveSel)
  101.           oTbrStru:arrayReference := aStru
  102.  
  103.           DispBegin()
  104.           oTbrStru:refreshAll()
  105.           DO WHILE !oTbrStru:stabilize()
  106.           ENDDO
  107.           oTbrStru:deHilite()
  108.           DispEnd()
  109.  
  110.           cLastDbfName := cThisDbfName
  111.         ENDIF
  112.       ENDIF
  113.     ENDIF
  114.  
  115.     IF !StdMeth(oTbrFiles, nKey)
  116.       // Handle exceptions
  117.       DO CASE
  118.         CASE nKey == K_ESC
  119.           lExitRequested := .T.
  120.       ENDCASE
  121.     ENDIF
  122.  
  123.   ENDDO
  124.  
  125. RETURN NIL
  126.  
  127.